/*
 * To change this template, choose Tools | Templates
 * and open the template in the editor.
 */

/**
 *
 * @author Christopher
 */
import java.util.Random;
import java.util.Scanner;
import java.util.InputMismatchException;
public class Driver {
    
    public static void main(String[] args){
        
        Random mi_random = new Random();
        Scanner entrada = new Scanner(System.in);
        int cant = 0, op1;
        int lista [] = null;
        
        
        do{
           menu();
           op1 = (int)obtenerNumero("Ingrese una opcion del menu: ", true);
           
           switch(op1){
               case 1: // Ingresar tamanio de lista y crearla con datos al azar
                   cant = (int)obtenerNumero("Ingrese la cantidad de datos de la lista: ", true);
                   lista = new int[cant];
                   for(int i=0; i<cant; i++){
                       lista[i] = mi_random.nextInt(100);
                       System.out.print(lista[i]);
                       System.out.print(" ");
                   }
                   System.out.println();
                   break;
                   
               case 2: // Selection Sorting
                   Selection.insertionSort(lista, cant);
                   for(int i=0; i<cant; i++){
                       System.out.print(lista[i]);
                       System.out.print(" ");
                   }
                   System.out.println();
                   break;
               case 3: // Quick Sorting
                   Quick.quickSort(lista, cant);
                   for(int i=0; i<cant; i++){
                       System.out.print(lista[i]);
                       System.out.print(" ");
                   }
                   System.out.println();
                   break;
               case 4: // Salir del programa
                   System.out.println("Fin del Programa");
                   break;
               default:
                   System.out.println("Dato no existe en el menu");
           }
        }while(op1 != 4);
        
    }
    
    public static void menu(){
        System.out.println("  **************************   ");
        System.out.println("  *          Menu          *   ");
        System.out.println("  **************************   ");
        System.out.println("                               ");
        System.out.println("1. Ingresar tamanio de lista   ");
        System.out.println("2. Crear SelectionSorting      ");
        System.out.println("3. Crear QuickSorting          ");
        System.out.println("4. Salir del programa          ");
        System.out.println("                               ");
    }
    
    public static double obtenerNumero(String mensaje, boolean mostrar){
        Scanner ingreso = new Scanner(System.in);
        double num = -1;
        
        System.out.print(mensaje);
        try{
            num = ingreso.nextDouble();
        }
        catch(InputMismatchException exception){
            if (mostrar)
                System.out.println("\nERROR: ~~> Dato invalido. :O(\n");
        }
        finally{
            ingreso.nextLine();//Atrapar el ENTER
        }
        return num;
    }
}
